package com.android.support.lib.universal.slidingmenu;

import com.android.support.lib.universal.R;
import com.android.support.lib.universal.base.BaseActivityManager;
import com.android.support.lib.universal.slidingmenu_library.BaseSlidingFragmentActivity;
import com.android.support.lib.universal.slidingmenu_library.SlidingMenu;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.util.DisplayMetrics;

/**
 * 
 * 新建滑动的Acivity继承BaseCenterLayoutActivity。就可调用里面的方法。
 * 
 * 注意：不可切屏。不然报错。 新继承的Activity必须在onCreate方法中调用 initSlidingMenu()方法添加滑动界面
 * SideFragment菜单滑动的时候，会挤压(推动)原有布局。即会有推拉效果。
 * DrawerLayout抽屉布局则不会有推拉效果。
 * 
 * @author 彭治铭
 *
 */
public class BaseCenterLayoutActivity extends BaseSlidingFragmentActivity {

	// 控制左右侧滑菜单类
	protected SlidingMenu mSlidingMenu;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 将当前Activity添加进栈里
		BaseActivityManager.getInstance().pushActivity(this);
		// 手机版本要求在4.4及以上版本,只对Activity有效，FragmentActivity无效。
		// if(VERSION.SDK_INT>=VERSION_CODES.KITKAT){
		// //透明状态栏
		// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
		// //透明导航栏
		// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
		// }
	}

	/**
	 * 添加滑动菜单，菜单对象新建类继承BaseSideFragment即可
	 * 
	 * @param mode
	 *            0左右滑,1左滑,2右滑
	 * @param mFrag_first
	 *            第一个菜单，不可为空(因为无论设置的是左滑还是右滑。显示的都是第一个菜单。)。添加布局和事件
	 * @param mFrag_second
	 *            第二个菜单菜单（只有设置左右滑时，第二个菜单才有效）,可为空。两个滑动菜单对象不可相同。但是布局可以相同。
	 * @param num
	 *            滑动菜单的宽带。1代表全屏 。2代表屏幕1/2，3即代表1/3 。数值越大宽度越小。
	 * @param siding
	 *            0 边缘滑动有效果(默认),1全屏滑动都有效果,2关闭手势滑动 .注意。布局文件
	 *            android:clickable="true" 必不可少。
	 * @param bool
	 *            是否设置菜单阴影效果
	 */
	@SuppressLint("NewApi")
	@SuppressWarnings("unused")
	public void initSlidingMenu(int mode, Fragment mFrag_first,
			Fragment mFrag_second, int num, int siding, Boolean bool) {
		DisplayMetrics dm = new DisplayMetrics();
		getWindowManager().getDefaultDisplay().getMetrics(dm);
		int mScreenWidth = dm.widthPixels;// 获取屏幕分辨率宽度

		mSlidingMenu = getSlidingMenu();

		// 设置左菜单
		setBehindContentView(R.layout.lib_slidingmenu_left);
		FragmentTransaction mFragementTransaction_left = getSupportFragmentManager()// 13397637352
				.beginTransaction();

		mFragementTransaction_left.replace(R.id.left_layout_fragment,
				mFrag_first);
		mFragementTransaction_left.commit();

		/**
		 * 设置菜单宽度
		 */
		mSlidingMenu.setBehindOffset(mScreenWidth-(mScreenWidth / num));

		mSlidingMenu.setFadeDegree(0.35f);// 设置淡入淡出的比例
		mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
		mSlidingMenu.setShadowWidth(mScreenWidth / 40);// 设置阴影宽度
		if (bool) {
			mSlidingMenu.setShadowDrawable(R.drawable.lib_slidingmenu_shadow);// 设置左菜单阴影图片
			mSlidingMenu
					.setSecondaryShadowDrawable(R.drawable.lib_slidingmenu_right_shadow);// 设置右菜单阴影图片
		}

		mSlidingMenu.setFadeEnabled(true);// 设置滑动时菜单的是否淡入淡出
		mSlidingMenu.setBehindScrollScale(0.333f);// 设置滑动时拖拽效果

		if (mode == 0) {
			mSlidingMenu.setMode(SlidingMenu.LEFT_RIGHT); // 左右滑动
			// 设置右边菜单(第二个菜单)
			mSlidingMenu.setSecondaryMenu(R.layout.lib_slidingmenu_right);
			FragmentTransaction mFragementTransaction_right = getSupportFragmentManager()
					.beginTransaction();
			mFragementTransaction_right.replace(R.id.right_layout_fragment,
					mFrag_second);
			mFragementTransaction_right.commit();
		}
		if (mode == 1) {
			mSlidingMenu.setMode(SlidingMenu.LEFT);
		}
		if (mode == 2) {
			if (bool) {
				mSlidingMenu.setShadowDrawable(R.drawable.lib_slidingmenu_right_shadow);// 设置右菜单阴影图片
			}
			mSlidingMenu.setMode(SlidingMenu.RIGHT);
		}
		if (siding == 0) {
			mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);// 边缘滑动有效果
		}
		if (siding == 1) {
			mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);// 全屏滑动都有效果
		}
		if (siding == 2) {
			mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);// 关闭手势滑动
		}
	}

	/**
	 * 第一个菜单 闭开（是闭就开，是开就闭）
	 */
	public void showMenu() {
		mSlidingMenu.showMenu(true);
	}

	/**
	 * 第二个菜单（如果没有第二个菜单。也作用于第一个菜单） 闭开（是闭就开，是开就闭）
	 */
	public void showSecondaryMenu() {
		mSlidingMenu.showSecondaryMenu(true);
	}

}
